COURSE DESCRIPTION
This course is an introduction to the fundamental concepts of Object-Oriented Programming (OOP) paradigm. Students will gain understanding of basic programming principles and progressively explore into the core concepts of OOP, including classes, objects, constructors, encapsulation, polymorphism, and inheritance. The course emphasizes practical application, encouraging students to design, implement, test, and debug solutions for small systems within a collaborative technical team setting.
COURSE GOAL
Setelah mengikuti praktikum ini, mahasiswa mampu:
- Develop strong foundation in basic programming principles, fostering their ability to write code, utilize variables, and implement fundamental algorithms..
- Build knowledge of the essential OOP concepts, including classes, objects, constructors, encapsulation, polymorphism, and inheritance, laying the groundwork for understanding modular and scalable coding practices.
- Develop ability to apply theoretical knowledge in practical scenarios, emphasizing collaborative teamwork.
- Develop ability to design, implement, test, and debug solutions for small systems, fostering hands-on learning and problem-solving skills.
COURSE LEARNING OUTCOMES (CLOs)
| Week1 | Course Learning Outcomes | Subject | Code |
|---|---|---|---|
| 1 | Explain basic programming concepts | Basic programming | CLO-1 |
| 2 | Explain basic programming concepts | IDE software installation and Introduction to python programming | CLO-1 - CLO2 |
| 2 | 1. Explain basic programming concepts 2. Explain the elements that make up an object (class, instance, method, class variable) | - OOP paradigm concepts (Class, Object, Constructor) -Elements that make up an object (Class, instance, method, class variable) | CLO-2- CLO 3 |
Penjelasan ATS
Teradapat 4 Case Study yang harus di selesaikan menggunakan bahasa pemrograman dan atau library Tkinter Silahkan kerjakan dengan benar untuk case study yang anda dapatkan
Case 1
Ichsan baru saja mendapat tugas dari Wildan dan Fairus. Mereka meminta Ichsan untuk membuat sebuah sistem yang dapat mengelola berbagai jenis robot dalam satu platform. Setiap robot dalam sistem ini memiliki beberapa atribut penting, yaitu:
- Nama robot, untuk memberikan identitas.
- Jenis robot, apakah itu RobotPembersih atau RobotPengantar.
- Status Operasional, yang menunjukkan apakah robot tersebut aktif atau tidak aktif.
Selain itu, Ichsan diminta untuk membangun sebuah kelas dasar Robot dan dua subclass: RobotPembersih dan RobotPengantar, yang memiliki kemampuan unik masing-masing.
Fungsi-fungsi tambahan:
- RobotPembersih harus memiliki kemampuan untuk membersihkan area.
- RobotPengantar harus bisa mengantar barang ke lokasi yang diinginkan.
Bantulah ichsan untuk membuat sistem tersebut agar sistem tersebut bisa digunakan oleh Wildan dan Fairus
# Buat kelas Robot dengan atribut nama, jenis, dan status
class Robot:
# TO DO: Inisialisasi atribut nama, jenis, status
def __init__(self, nama, jenis, status):
...
# TO DO: Metode untuk mengaktifkan robot
def aktifkan(self):
...
# TO DO: Metode untuk mematikan robot
def matikan(self):
...
# TO DO: Metode untuk menampilkan status operasional
def status_operasional(self):
...
# Buat subclass RobotPembersih dari Robot
class RobotPembersih(Robot):
# TO DO: Tambahkan atribut kapasitas_bak
def __init__(self, nama, jenis, status, kapasitas_bak):
...
# TO DO: Tambahkan metode untuk membersihkan area
def bersihkan_area(self):
...
# TO DO: Override metode status_operasional untuk tampilkan kapasitas bak
def status_operasional(self):
...
# Buat subclass RobotPengantar dari Robot
class RobotPengantar(Robot):
# TO DO: Tambahkan atribut tujuan
def __init__(self, nama, jenis, status, tujuan):
...
# TO DO: Tambahkan metode untuk mengantar barang
def antar_barang(self):
...
# TO DO: Override metode status_operasional untuk tampilkan tujuan
def status_operasional(self):
...
To DO: Buat dan Jalankan Object dari Class yang sudah dibuat
# Buat objek CleanBot
# Tampilkan status
# Aktifkan
# Bersihkan area
# Buat objek DeliveryBot
# Tampilkan status
# Antar barang
Case 2
Crystiade dan Joel sebagai pengelola BRAIL ingin mempermudah proses peminjaman alat-alat elektronik untuk mahasiswa. Untuk itu, mereka meminta bantuan Akbar agar membuat sebuah aplikasi GUI sederhana menggunakan Tkinter.
Aplikasi ini akan digunakan oleh mahasiswa yang ingin meminjam peralatan seperti:
- monitor,
- keyboard,
- multimeter,
- mouse dan
- alat solder.
Mahasiswa cukup mengisi form dan memilih barang yang ingin dipinjam, lalu klik tombol "Kirim" — dan aplikasi akan langsung menampilkan ringkasan data peminjaman.
Bantulah Akbar agar aplikasi GUI sederhana ini selesai :)
import tkinter as tk
from tkinter import messagebox
def kirim_formulir():
nama = entry_nama.get()
nim = entry_nim.get()
barang_dipinjam = [barang for barang, var in barang_vars.items() if var.get()]
# TO DO: Tampilkan Validasi input
if not nama or not nim:
messagebox.showerror("salah memasukkan data")
return
# TO DO: Tampilkan Validasi input
if not barang_dipinjam:
messagebox.showerror("Barang tidak tersedia")
return
# TO DO: Tampilkan ringkasan
pesan = (
f""
f"... : {nama}\n"
f"... : {nim}\n"
f"Barang yang dipinjam:\n" + "\n".join(f"- {item}" for item in barang_dipinjam)
)
messagebox.showinfo("Peminjaman Berhasil", pesan)
root = tk.Tk()
root.title("Formulir Peminjaman Barang Elektronik")
# TO DO: Input Nama
...
...
...
# TO DO: Input NIM
...
...
# TO DO: Pilihan Barang
...
barang_list = ["Monitor", "...", "...", "...", "...']
barang_vars = {}
for barang in barang_list:
var = tk.BooleanVar()
tk.Checkbutton(root, text=barang, variable=var).pack(anchor="w", padx=20)
barang_vars[barang] = var
# TO DO: Tombol Kirim
...
root....()
Case 3
Clarence dan Filza sedang menjalani program magang di sebuah perusahaan teknologi modern. Suatu hari, atasan mereka, Pak Faris, memberikan tantangan seru: membuat program untuk mengelola data karyawan menggunakan konsep Object-Oriented Programming (OOP).
Pak Faris menjelaskan bahwa setiap karyawan memiliki data dasar: nama, posisi, dan gaji pokok. Namun, ada peran khusus seperti Manager yang tidak hanya menerima gaji pokok, tetapi juga mendapat bonus tambahan.
Tugas Clarence dan Filza adalah membuat kelas Karyawan dan subclass Manager yang mewarisi dari kelas Karyawan. Selain menampilkan data, kelas Manager juga harus bisa menghitung gaji total, yaitu gaji pokok ditambah bonus.
# TODO: Buat kelas Karyawan dengan atribut nama, posisi, dan gaji_pokok
class Karyawan:
def __init__(self, nama, posisi, gaji_pokok):
# TODO: Inisialisasi atribut
...
# TODO: Buat metode untuk menampilkan data karyawan
def tampilkan_data(self):
...
# TODO: Buat subclass Manager yang mewarisi dari Karyawan
class Manager(Karyawan):
def __init__(self, nama, posisi, gaji_pokok, bonus):
# TODO: Panggil konstruktor parent dan inisialisasi atribut bonus
...
# TODO: Buat metode untuk menghitung gaji total (gaji pokok + bonus)
def hitung_gaji_total(self):
...
# TODO: Override metode tampilkan_data untuk menampilkan bonus dan gaji total
def tampilkan_data(self):
...
To DO: Buat dan Jalankan Object dari Class yang sudah dibuat
# TODO: Buat objek Karyawan dan tampilkan data
# TODO: Buat objek Manager dan tampilkan data beserta bonus dan gaji total
Case 4
Walter dan Yonatan sedang diberikan tugas oleh Rizky selaku ketua kelas, untuk membuat sebuah aplikasi formulir identitas diri menggunakan Tkinter.
Formulir ini akan meminta pengguna yaitu mahasiswa kelas 2c untuk mengisi beberapa informasi pribadi yang penting seperti nama, kota lahir, status pernikahan, agama, dan alamat.
Setelah mengisi formulir, aplikasi akan menampilkan data yang dimasukkan oleh pengguna dalam bentuk pesan pop-up yang berisi informasi lengkap yang telah diisi.
Bantulah Walter dan Yonatan untuk membuat aplikasi formulir sederhana tersebut, agar Rizky dan teman-temannya bisa menggunakannya
import tkinter as tk
from tkinter import messagebox
def kirim_formulir():
nama = entry_nama.get()
kota_lahir = entry_kota_lahir.get()
status = status_var.get()
agama = agama_var.get()
alamat = entry_alamat.get("1.0", "end-1c")
if not nama or not kota_lahir or not status or not agama or not alamat:
messagebox.showerror("Error", "Harap lengkapi semua kolom.")
return
# TO DO: Lengkapi Tampilkan ringkasan
pesan = (
f"Formulir Identitas Diri\n\n"
f"...: {nama}\n"
f"...: {kota_lahir}\n"
f"...: {status}\n"
f"...: {agama}\n"
f"...: {alamat}"
)
messagebox.showinfo("Data Identitas", pesan)
root = tk.Tk()
root.title("Formulir Identitas Diri")
TODO: Label dan Entry untuk Nama
# TO DO: YOUR ANSWER
TODO: Label dan Entry untuk Kota Lahir
# TO DO: YOUR ANSWER
TODO: Tambahkan Radiobutton untuk status "Menikah" dan "Belum Menikah"
# TO DO: YOUR ANSWER
TODO: Label untuk Agama
# TO DO: YOUR ANSWER
TODO: Tambahkan Radiobutton untuk pilihan agama (Islam, Kristen, Hindu, Buddha, Konghucu)
# TO DO: YOUR ANSWER
TODO: Label dan Textbox untuk Alamat
# TO DO: YOUR ANSWER
TODO: Tambahkan tombol Kirim Formulir
# TO DO: YOUR ANSWER
root.mainloop()
Submission
- Pastikan code yang anda buat sudah menyelesaikan studikasus tersebut dengan di buktikan screenshoot atau screenrecord saat di jalankan
- Jelaskan Bagian-bagian kode yang anda tambahakan apa fungsinya
- Sertakan code full ke dalam file submisson anda bisa di upload ke github atau google colab lalu sertakan di file pengumpulan
- Upload file di sini : https://forms.gle/Rmjky8PvxxdiaA5g8